Skip to content

feat: add feedback endpoint for Linear issue creation#322

Merged
IonesioJunior merged 3 commits intomainfrom
tauquir/ome-76-feedback-linear-proxy
Mar 16, 2026
Merged

feat: add feedback endpoint for Linear issue creation#322
IonesioJunior merged 3 commits intomainfrom
tauquir/ome-76-feedback-linear-proxy

Conversation

@itstauq
Copy link
Member

@itstauq itstauq commented Mar 16, 2026

Summary

  • Add authenticated POST /api/v1/feedback endpoint that proxies user feedback/bug reports to Linear as issues via GraphQL API
  • Support screenshot uploads as Linear file attachments (3-step: request upload URL, PUT file, create attachment)
  • Add LINEAR_API_KEY and LINEAR_TEAM_ID settings to config

Context

Syft Space (desktop app) needs to submit user feedback but cannot hold Linear API tokens locally. This endpoint acts as an authenticated proxy — Syft Space authenticates with SyftHub credentials and SyftHub creates the Linear issue server-side.

Ref: OME-76

Test plan

  • Set LINEAR_API_KEY and LINEAR_TEAM_ID env vars on SyftHub deployment
  • Submit feedback from Syft Space frontend and verify Linear issue is created
  • Test with screenshot attachment
  • Test without screenshot
  • Verify unauthenticated requests are rejected

Add authenticated POST /api/v1/feedback endpoint that accepts user
feedback/bug reports and creates Linear issues via GraphQL API.
Supports screenshot upload as file attachments.

Ref: OME-76
@linear
Copy link

linear bot commented Mar 16, 2026

@itstauq itstauq force-pushed the tauquir/ome-76-feedback-linear-proxy branch 2 times, most recently from 7c0a79d to 7ed8a71 Compare March 16, 2026 17:34
@itstauq itstauq force-pushed the tauquir/ome-76-feedback-linear-proxy branch from 7ed8a71 to a1485ee Compare March 16, 2026 17:36
@itstauq itstauq requested a review from IonesioJunior March 16, 2026 17:39
@IonesioJunior IonesioJunior merged commit 91c511c into main Mar 16, 2026
25 checks passed
@IonesioJunior IonesioJunior deleted the tauquir/ome-76-feedback-linear-proxy branch March 19, 2026 14:04
IonesioJunior added a commit that referenced this pull request Mar 19, 2026
* chore(deps-dev): bump svgo from 4.0.0 to 4.0.1 in /components/frontend (#309)

Bumps [svgo](https://github.com/svg/svgo) from 4.0.0 to 4.0.1.
- [Release notes](https://github.com/svg/svgo/releases)
- [Commits](svg/svgo@v4.0.0...v4.0.1)

---
updated-dependencies:
- dependency-name: svgo
  dependency-version: 4.0.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump immutable from 5.1.4 to 5.1.5 in /components/frontend (#308)

Bumps [immutable](https://github.com/immutable-js/immutable-js) from 5.1.4 to 5.1.5.
- [Release notes](https://github.com/immutable-js/immutable-js/releases)
- [Changelog](https://github.com/immutable-js/immutable-js/blob/main/CHANGELOG.md)
- [Commits](immutable-js/immutable-js@v5.1.4...v5.1.5)

---
updated-dependencies:
- dependency-name: immutable
  dependency-version: 5.1.5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Refactor/endpoint health api (#311)

* feat(backend): add POST /endpoints/health for per-endpoint health reporting

Add a new API endpoint that accepts granular per-endpoint health status
from clients, replacing the domain-level heartbeat as the primary health
signal. The health monitor is simplified to a 2-tier approach: per-endpoint
health (priority 1) with heartbeat as a deprecated fallback (priority 2).

- Add health_status, health_checked_at, health_ttl_seconds to EndpointModel
- Add POST /endpoints/health route with bulk slug matching and TTL capping
- Add EndpointHealthRequest/Response schemas and repository methods
- Simplify health monitor: remove HTTP fallback, extract modular tier methods
- Add deprecation notes to heartbeat endpoints, services, schemas, and models
- Add alembic migration for new nullable endpoint health columns

* remove alembic migrations

* chore: add migrations

* test(backend): update health monitor tests and add endpoint health tests

* ci: add workflow to trigger cross-service E2E tests on push to main

* chore: trigger e2e workflow

* chore(deps): bump pyjwt from 2.10.1 to 2.12.0 in /components/aggregator

Bumps [pyjwt](https://github.com/jpadilla/pyjwt) from 2.10.1 to 2.12.0.
- [Release notes](https://github.com/jpadilla/pyjwt/releases)
- [Changelog](https://github.com/jpadilla/pyjwt/blob/master/CHANGELOG.rst)
- [Commits](jpadilla/pyjwt@2.10.1...2.12.0)

---
updated-dependencies:
- dependency-name: pyjwt
  dependency-version: 2.12.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps): bump pyjwt from 2.10.1 to 2.12.0 in /components/backend

Bumps [pyjwt](https://github.com/jpadilla/pyjwt) from 2.10.1 to 2.12.0.
- [Release notes](https://github.com/jpadilla/pyjwt/releases)
- [Changelog](https://github.com/jpadilla/pyjwt/blob/master/CHANGELOG.rst)
- [Commits](jpadilla/pyjwt@2.10.1...2.12.0)

---
updated-dependencies:
- dependency-name: pyjwt
  dependency-version: 2.12.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* feat: add feedback endpoint for Linear issue creation (#322)

* feat: add feedback endpoint that creates Linear issues

Add authenticated POST /api/v1/feedback endpoint that accepts user
feedback/bug reports and creates Linear issues via GraphQL API.
Supports screenshot upload as file attachments.

Ref: OME-76

* chore: fix lint errors

* ci: wire LINEAR_API_KEY and LINEAR_TEAM_ID through deployment pipeline

* fix(deps): patch 6 open Dependabot security vulnerabilities (#324)

Upgrade authlib, PyJWT, and pyasn1 to fix 6 open security alerts:

MCP component:
- authlib 1.6.6 → 1.6.9: fixes CVE-2026-27962 (CRITICAL: JWS header
  injection signature bypass), CVE-2026-28490 (Bleichenbacher padding
  oracle), CVE-2026-28498 (fail-open OIDC hash binding),
  CVE-2026-28802 (alg:none signature bypass)
- PyJWT 2.10.1 → 2.12.1: fixes CVE-2026-32597 (accepts unknown crit
  header extensions)
- Add pydantic override to resolve pre-existing syft-accounting-sdk
  version conflict during lock regeneration

Backend component:
- pyasn1 0.6.2 → 0.6.3: fixes CVE-2026-30922 (DoS via unbounded
  recursion). Added as uv override-dependency since it is transitive
  via google-auth.

Aggregator component:
- Document nltk 3.9.3 (CVE-2026-33230, unbounded recursion DoS) as
  unfixable — no upstream patch available, mitigated by context
  (backend service, no HTML rendering, no JSONTaggedDecoder usage)

Closes #80, #79, #78, #77, #76, #75, #72, #66

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Shubham Gupta <11032835+shubham3121@users.noreply.github.com>
Co-authored-by: Tauquir <30658453+itstauq@users.noreply.github.com>
Co-authored-by: Ionésio Junior <ionesiojr@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants